import pandas as pd
import os

# 文件路径
file_path = r'e:\ProjectDemo\spider\PythonProject\logger\distinct\bee-big-screen-2025-08.xlsx'
output_file = r'e:\ProjectDemo\spider\PythonProject\logger\distinct\bee-big-screen-2025-08_with_duplicates.xlsx'

try:
    # 读取Excel文件中的所有sheet
    xl = pd.ExcelFile(file_path)
    sheet_names = xl.sheet_names
    
    if len(sheet_names) < 3:
        print(f"警告: 发现{len(sheet_names)}个sheet，少于预期的3个")
    else:
        # 只使用前三个sheet
        sheet_names = sheet_names[:3]
        print(f"将使用前三个sheet: {', '.join(sheet_names)}")
    
    # 存储所有sheet的rtuAddress数据
    all_rtu_addresses = []
    sheet_data = {}
    
    # 读取每个sheet的数据
    for sheet in sheet_names:
        df = xl.parse(sheet)
        sheet_data[sheet] = df
        
        # 检查rtuAddress列是否存在
        if 'rtuAddress' not in df.columns:
            print(f"错误: 在sheet '{sheet}'中未找到'rtuAddress'列")
            continue
        
        # 收集rtuAddress数据
        all_rtu_addresses.extend(df['rtuAddress'].dropna().astype(str).tolist())
    
    # 统计每个rtuAddress的出现次数
    from collections import Counter
    rtu_count = Counter(all_rtu_addresses)
    
    # 创建重复次数统计的DataFrame
    duplicates_df = pd.DataFrame({
        'rtuAddress': list(rtu_count.keys()),
        'repeate': list(rtu_count.values())
    })
    
    # 按重复次数降序排序
    duplicates_df = duplicates_df.sort_values('repeate', ascending=False)
    
    # 创建ExcelWriter对象
    try:
        # 尝试使用xlsxwriter引擎
        writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
    except ModuleNotFoundError:
        # 如果xlsxwriter不存在，使用默认引擎
        print("警告: xlsxwriter模块未安装，将使用默认引擎")
        writer = pd.ExcelWriter(output_file)
    
    # 写入原始sheet数据（不添加重复次数列）
    for sheet in sheet_names:
        sheet_data[sheet].to_excel(writer, sheet_name=sheet, index=False)
    
    # 写入重复次数统计sheet
    duplicates_df.to_excel(writer, sheet_name='重复次数', index=False)
    
    writer.close()
    
    print(f"处理完成! 结果已保存到: {output_file}")
    print(f"共统计了{len(rtu_count)}个不同的rtuAddress值")
    
except FileNotFoundError:
    print(f"错误: 找不到文件 '{file_path}'")
except Exception as e:
    print(f"处理过程中发生错误: {str(e)}")